Repository navigation
Conversation
Contributor
|
@mxmzb is attempting to deploy a commit to the Vercel Labs Team on Vercel. A member of the Team first needs to authorize it. |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
When
useChatUIreceives patches that append to an existing state array, arepeatlist can stay empty until the stream ends andloadingchanges. The records have already arrived, but the hook's shallow state copies share the array with the mutable patch accumulator.StateProvidersees the same array reference and does not notify its subscribers.Capture a detached state snapshot before queuing each React message update, and detach the final callback's state as well. This keeps previously published state from changing underneath React. The core patch API and element-tree copying remain unchanged. The fix adds a deep copy of the streamed JSON state per patch.
The regression uses a controlled
ReadableStreamwithuseChatUI,JSONUIProvider, andRenderer. While the stream stays open, it verifies indexed and/-appends, a nested field replacement, removal, and preservation of earlier state snapshots. It fails on the first append without the fix ([]instead of["First"]) and passes with it.Validation:
pnpm test: 1,260 tests passed.pnpm type-check,pnpm lint, all package builds, version synchronization, and formatting checks passed.@json-render/react@0.21.3in a browser consumer: twelve repeated records are visible while the replay stream is still open; without the patch, zero are visible until it closes.pnpm --filter @json-render/react typecheckfails on existing errors inhooks.test.tsandstreaming-render.test.tsx. The unmodified baseline and this branch produce identical output. The root type-check command does not run that package's differently namedtypecheckscript.